using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Yozeev.BusinessLogic.Dtos;
using Yozeev.BusinessLogic.DeviceManagement.Dtos;

namespace Yozeev.BusinessLogic
{
    /// <summary>
    /// Device应用层服务的接口方法
    ///</summary>
    public interface IDeviceAppService : IApplicationService
    {
        /// <summary>
		/// 获取Device的分页列表信息
		///</summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<DeviceListDto>> GetPaged(GetDevicesInput input);


		/// <summary>
		/// 通过指定id获取DeviceListDto信息
		/// </summary>
		Task<DeviceListDto> GetById(EntityDto<Guid> input);


        /// <summary>
        /// 返回实体的EditDto
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<GetDeviceForEditOutput> GetForEdit(NullableIdDto<Guid> input);


        /// <summary>
        /// 添加或者修改Device的公共方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task CreateOrUpdate(CreateOrUpdateDeviceInput input);


        /// <summary>
        /// 删除Device信息的方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task Delete(EntityDto<Guid> input);


        /// <summary>
        /// 批量删除Device
        /// </summary>
        Task BatchDelete(List<Guid> input);

        /// <summary>
        /// 根据设备编号获取证件类型
        /// </summary>
        /// <param name="deviceCode">设备编号</param>
        /// <returns></returns>
        Task<List<IdentityTypeDto>> GetIdentityType(string deviceCode);


		/// <summary>
        /// 导出Device为excel表
        /// </summary>
        /// <returns></returns>
		//Task<FileDto> GetToExcel();

    }
}
